#ifndef TESTHEADER_H
#define TESTHEADER_H
#include "TestSuite.h"

/* 

  Encapsulates all the tests. 
  
	Any member function starting 'test' is interpreted as a test to be executed.
	
	  The tests will be executed in the order they are in this file.
	  
		Note that the code for the individual tests may be in different CPP files.
		
*/

namespace BSON
{
  class CDocument;
}

class CConstructionTest : public CxxTest::TestSuite
{
public:
  CConstructionTest(const TDesC8& aSuiteName):CxxTest::TestSuite(aSuiteName){}
  
  void testDocument();
  void testArray();
  void testString();
  void testBinary();
  void TestNull();
  void TestBool();
  void TestInt32();
  void TestInt64();
  void TestDouble();
  void TestUtcDateTime();
};


class CSerializationTest : public CxxTest::TestSuite
{	
public:
  CSerializationTest(const TDesC8& aSuiteName):CxxTest::TestSuite(aSuiteName){}

	void testEmptyDocument();
	void testDocumentWithNull();
	void testDocumentWithBool();
	void testDocumentWithInt32();
	void testDocumentWithInt64();
	void testDocumentWithDouble();
	void testDocumentWithUtcDateTime();
	void testDocumentWithUtfString();
	void testDocumentWithBinary();
	void testDocumentWithEmptyArray();
  void testDocumentWithNullInArray();
  void testDocumentWithBoolInArray();
  void testDocumentWithInt32InArray();
  void testDocumentWithInt64InArray();
  void testDocumentWithDoubleInArray();
  void testDocumentWithUtcDateTimeInArray();
  void testDocumentWithUtfStringInArray();
  void testDocumentWithEmptyArrayInArray();
  void testBsonAwesome();
};

#endif // TESTHEADER_H
